/*
 * $Id: assert.h,v 1.5 2005-04-24 07:48:16 bacon Exp $
 */
 
#ifndef _XP_BAS_ASSERT_H_
#define _XP_BAS_ASSERT_H_

#include <xp/types.h>
#include <xp/macros.h>

#ifdef XP_NDEBUG

#define xp_assert(expr) ((void)0)
#define xp_ensure(expr) (void)(expr)

#else

#define xp_assert(expr) (void)((expr) || \
	(__xp_assert(XP_TEXT(#expr), XP_TEXT(__FILE__), __LINE__), 0))
#define xp_ensure(expr) xp_assert(expr)

#endif

#ifdef __cplusplus
extern "C" {
#endif

void __xp_assert (const xp_char_t* expr, const xp_char_t* file, int line);

#ifdef __cplusplus
}
#endif


#endif
